package apis

type Action string

// cryptographic
const (
	CreateKey                       Action = "CreateKey"
	Encrypt                         Action = "Encrypt"
	Decrypt                         Action = "Decrypt"
	GenerateDataKey                 Action = "GenerateDataKey"
	GenerateDataKeyWithoutPlaintext Action = "GenerateDataKeyWithoutPlaintext"
	Sign                            Action = "Sign"
	Verify                          Action = "Verify"
	AsymmetricEncrypt               Action = "AsymmetricEncrypt"
	AsymmetricDecrypt               Action = "AsymmetricDecrypt"
	ExportDataKey                   Action = "ExportDataKey"
	GetPublicKey                    Action = "GetPublicKey"
)

// enroll
const (
	Enroll Action = "Enroll"
)

// remote_attestation
const (
	GenerateQuote     Action = "GenerateQuote"
	VerifyQuote       Action = "VerifyQuote"
	UploadQuotePolicy Action = "UploadQuotePolicy"
	GetQuotePolicy    Action = "GetQuotePolicy"
)

// key_management
const (
	ListKey      Action = "ListKey"
	DeleteKey    Action = "DeleteKey"
	DeleteAllKey Action = "DeleteAllKey"
	EnableKey    Action = "EnableKey"
	DisableKey   Action = "DisableKey"
)

// secret_manager
const (
	CreateSecret         Action = "CreateSecret"
	UpdateSecretDesc     Action = "UpdateSecretDesc"
	PutSecretValue       Action = "PutSecretValue"
	ListSecretVersionIds Action = "ListSecretVersionIds"
	ListSecrets          Action = "ListSecrets"
	DescribeSecret       Action = "DescribeSecret"
	DeleteSecret         Action = "DeleteSecret"
	GetSecretValue       Action = "GetSecretValue"
	RestoreSecret        Action = "RestoreSecret"
)

// common
const (
	GetVersion Action = "GetVersion"
	GenHmac    Action = "GenHmac"
)

var ActionBypassList = [2]Action{
	Enroll,
	GetVersion,
}
